package com.topten.negocio;

import java.util.List;

import com.topten.basicas.comum.Situacao;
import com.topten.basicas.seguranca.Perfil;
import com.topten.basicas.seguranca.SituacaoSenha;
import com.topten.basicas.seguranca.Usuario;
import com.topten.basicas.varejo.Cliente;
import com.topten.dao.especificos.DAOCliente;
import com.topten.dao.especificos.DAOPerfil;
import com.topten.dao.especificos.DAOUsuario;
import com.topten.dao.especificos.IDAOCliente;
import com.topten.dao.especificos.IDAOPerfil;
import com.topten.dao.especificos.IDAOUsuario;
import com.topten.exceptions.NegocioException;

public class NegocioCliente {

	private IDAOCliente clienteDAO;
	private IDAOUsuario usuarioDAO;

	public NegocioCliente() {
		this.clienteDAO = new DAOCliente();
		this.usuarioDAO = new DAOUsuario();
	}

	public void inserirCliente(Cliente cliente, Usuario usuario) throws CpfJaCadastradoException {

		Cliente c = this.clienteDAO.buscarClientePorCpf(cliente.getDocumento1());
		
		if (c == null) {			
			usuario.setSenhaAtual(cliente.getUsuario().getSenhaAtual());
			usuario.setLogin(cliente.getUsuario().getLogin());
			usuario.setPerfil(cliente.getUsuario().getPerfil());
			usuario.setSituacaoSenha(SituacaoSenha.ATIVA);
				
			//this.usuarioDAO.inserir(usuario);

			Usuario u = this.usuarioDAO.buscarUsuarioPorLogin(usuario.getLogin());
			cliente.setUsuario(u);			
			
			//this.clienteDAO.inserir(cliente);		
			this.clienteDAO.inserirObjetos(cliente, usuario);
		} else {
			throw new  CpfJaCadastradoException();			
		}
	}

	public void removerCliente(Cliente cliente) {
		this.clienteDAO.remover(cliente);
	}

	public void atualizarCliente(Cliente cliente)  {
		this.clienteDAO.alterar(cliente);
	}

	public Cliente buscarClienteId(Integer id) {		
		return this.clienteDAO.consultarPorId(id);		
	}

	public List<Cliente> listarCliente() {
		return this.clienteDAO.consultarTodos();
	}
}
